def timeSeriesPlotter(C=C,CN=CN,CNr=CNr,x=x, simulation=0,title=''):
plt.figure(figsize=(10, 6))
plt.subplot(311)
plt.plot(x, C[:,simulation], alpha = .5)
plt.ylabel('Coral Node Count')
plt.subplot(312)
plt.ylabel('CN Index')
plt.xlabel('Time')
plt.plot(x, CN[:,simulation], alpha = .5)
plt.subplot(313)
plt.ylabel('CNr Index')
plt.xlabel('Time')
plt.plot(x, CNr[:,simulation], alpha = .5)
def initialFinal9(types=types, C=C, CN=CN, CNr=CNr, simulation=1,
timesteps=[0,1,2,3,4,5,6,7,8,9,10,11,12]):
plt.figure(figsize=(15, 12))
#colors = ['pink', 'lightgreen','darkgreen']
#levels = [0, 1, 2]
#cmap, norm = clt.from_levels_and_colors(levels=levels, colors=colors, extend='max')
plt.subplot(331).set_title('-C- ' + str(C[timesteps[0],simulation])+
' -CN- ' + str(round(CN[timesteps[0],simulation],2))+
' -CNr- ' + str(round(CNr[timesteps[0],simulation],2)),
fontweight="bold")
plt.imshow(shaper(types[timesteps[0],:,simulation],10),
cmap=cmap, norm=norm)
plt.subplot(332).set_title('-C- ' + str(C[timesteps[1],simulation])+
' -CN- ' + str(round(CN[timesteps[1],simulation],2))+
' -CNr- ' + str(round(CNr[timesteps[1],simulation],2)),
fontweight="bold")
plt.imshow(shaper(types[timesteps[1],:,simulation],10),
cmap=cmap, norm=norm)
plt.subplot(333).set_title('-C- ' + str(C[timesteps[2],simulation])+
' -CN- ' + str(round(CN[timesteps[2],simulation],2))+
' -CNr- ' + str(round(CNr[timesteps[2],simulation],2)),
fontweight="bold")
plt.imshow(shaper(types[timesteps[2],:,simulation],10),
cmap=cmap, norm=norm)
plt.subplot(334).set_title('-C- ' + str(C[timesteps[3],simulation])+
' -CN- ' + str(round(CN[timesteps[3],simulation],2))+
' -CNr- ' + str(round(CNr[timesteps[0],simulation],2)),
fontweight="bold")
plt.imshow(shaper(types[timesteps[3],:,simulation],10),
cmap=cmap, norm=norm)
plt.subplot(335).set_title('-C- ' + str(C[timesteps[4],simulation])+
' -CN- ' + str(round(CN[timesteps[4],simulation],2))+
' -CNr- ' + str(round(CNr[timesteps[4],simulation],2)),
fontweight="bold")
plt.imshow(shaper(types[timesteps[4],:,simulation],10),
cmap=cmap, norm=norm)
plt.subplot(336).set_title('-C- ' + str(C[timesteps[5],simulation])+
' -CN- ' + str(round(CN[timesteps[5],simulation],2))+
' -CNr- ' + str(round(CNr[timesteps[5],simulation],2)),
fontweight="bold")
plt.imshow(shaper(types[timesteps[5],:,simulation],10),
cmap=cmap, norm=norm)
plt.subplot(337).set_title('-C- ' + str(C[timesteps[6],simulation])+
' -CN- ' + str(round(CN[timesteps[6],simulation],2))+
' -CNr- ' + str(round(CNr[timesteps[6],simulation],2)),
fontweight="bold")
plt.imshow(shaper(types[timesteps[6],:,simulation],10),
cmap=cmap, norm=norm)
plt.subplot(338).set_title('-C- ' + str(C[timesteps[7],simulation])+
' -CN- ' + str(round(CN[timesteps[7],simulation],2))+
' -CNr- ' + str(round(CNr[timesteps[7],simulation],2)),
fontweight="bold")
plt.imshow(shaper(types[timesteps[7],:,simulation],10),
cmap=cmap, norm=norm)
plt.subplot(339).set_title('-C- ' + str(C[timesteps[8],simulation])+
' -CN- ' + str(round(CN[timesteps[8],simulation],2))+
' -CNr- ' + str(round(CNr[timesteps[8],simulation],2)),
fontweight="bold")
plt.imshow(shaper(types[timesteps[8],:,simulation],10),
cmap=cmap, norm=norm)
plt.show()
def initialFinal3(types=types, C=C, CN=CN, CNr=CNr, simulation=1,
timesteps=[0,1,2]):
plt.figure(figsize=(15, 4))
#colors = ['pink', 'lightgreen','darkgreen']
#levels = [0, 1, 2]
#cmap, norm = clt.from_levels_and_colors(levels=levels, colors=colors, extend='max')
plt.subplot(131).set_title('-C- ' + str(C[timesteps[0],simulation])+
' -CN- ' + str(round(CN[timesteps[0],simulation],2))+
' -CNr- ' + str(round(CNr[timesteps[0],simulation],2)),
fontweight="bold")
plt.imshow(shaper(types[timesteps[0],:,simulation],10),
cmap=cmap, norm=norm)
plt.subplot(132).set_title('-C- ' + str(C[timesteps[1],simulation])+
' -CN- ' + str(round(CN[timesteps[1],simulation],2))+
' -CNr- ' + str(round(CNr[timesteps[1],simulation],2)),
fontweight="bold")
plt.imshow(shaper(types[timesteps[1],:,simulation],10),
cmap=cmap, norm=norm)
plt.subplot(133).set_title('-C- ' + str(C[timesteps[2],simulation])+
' -CN- ' + str(round(CN[timesteps[2],simulation],2))+
' -CNr- ' + str(round(CNr[timesteps[2],simulation],2)),
fontweight="bold")
plt.imshow(shaper(types[timesteps[2],:,simulation],10),
cmap=cmap, norm=norm)
plt.show()
In this notebook, we take you through examples of running our model the various way to plot the model's outputs.
from coralModelTracking import Organism, Reef, Ocean
import tools as tl
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.colors as clt
from mpl_toolkits.axes_grid1.inset_locator import InsetPosition
## Simulations and Number of runs
NumberOfSimulations = 100
dt=.1
tf=100
## Grid shapes
rows, columns = 10, 10
## Inital Coral/Algae Percentages
coralPercent = .5
algaePercent = .25
## Parameters
r=1.0
d=.4 #.2
a=.2
g=.9
y=.75 #.9
threshold = 1.45 #extent of neighborhood recognition
NumberOfTimesteps = int(tf/dt)
NumberOfNodes = rows * columns
turfPercent = 1 - coralPercent - algaePercent
Pacific = Ocean()
for s in range(0,NumberOfSimulations):
Moorea = Reef()
count = 0
for i in range(0,rows):
for j in range(0,columns):
U = np.random.choice([0,1,2],
p=[coralPercent, turfPercent, algaePercent])
node = Organism(type=U, location=[i,j], ID=count)
Moorea.append(node)
count = count + 1
Moorea.generateGraph(threshold)
for n in range(0,NumberOfTimesteps):
Moorea.roll(r=r, d=d, a=a, g=g, y=y, dt=dt)
Pacific.append(Moorea)
Pacific.simulation[1].coralNodeCountPacific.simulation[1].coralNeighborCountCan pull keys and values via:
x = list(dictionary.keys()), andy = list(dictionary.values())In running the coralModel, we are interested in capturing the CN index: the average number of coral neighbors for each coral node.
example = Pacific.simulation[1].coralNodeCount
x = list(example.keys()) ## the time steps
coralCount = list(example.values()) ## the number of coral nodes
plt.figure(figsize=(15, 5))
plt.plot(x,coralCount)
example = Pacific.simulation[1].coralNeighborCount
x = list(example.keys())
CN = np.array(list(example.values()))/np.array(coralCount) ## taking the average of the neighborhood count
plt.figure(figsize=(15, 5))
plt.plot(x,CN)
plt.plot(x,np.repeat(4, NumberOfTimesteps))
Each node can have up to 8 neighbors. If the average is above 4 (the orange line above), this means on average, each coral node is surrounded by more coral than all other benthic types combined.
example = Pacific.simulation[1].coralNeighborCount
x = coralCount
y = CN
plt.figure(figsize=(15, 5))
plt.scatter(x,y)
def dictToNumpy(dictionary):
output = list(dictionary.values())
output = np.array(output)
return(output)
multsimCoralCounts = np.array([dictToNumpy(Pacific.simulation[i].coralNodeCount)
for i,val in enumerate(Pacific.simulation)]).transpose()
multsimNeighborCounts = np.array([dictToNumpy(Pacific.simulation[i].coralNeighborCount)
for i,val in enumerate(Pacific.simulation)]).transpose()
x = list(Pacific.simulation[1].coralNodeCount.keys())
plt.figure(figsize=(15, 5))
plt.plot(x,multsimCoralCounts[:,1:7], alpha=0.4)
plt.plot(x,multsimCoralCounts.mean(axis=1), 'black')
plt.figure(figsize=(15, 5))
CN = multsimNeighborCounts[:,1:7]/multsimCoralCounts[:,1:7]
CNmean = (multsimNeighborCounts/multsimCoralCounts).mean(axis=1)
plt.plot(x, CN, alpha=0.4)
plt.plot(x, CNmean, 'black')
## distance to center mask
center = (round(rows/2),round(columns/2))
distanceGrid = np.array([Reef.distance([i+.5,j+.5], center)
for i in range(0,rows)
for j in range(0,columns)]).reshape(rows,columns)
plt.figure(figsize=(15, 5))
plt.imshow(distanceGrid)
coralNodeLocations = (np.where(distanceGrid < np.median(distanceGrid)))
coralNodeLocations = [(coralNodeLocations[0][n],coralNodeLocations[1][n])
for n in range(0,len(coralNodeLocations[0]))]
### Sudo Making of Initial Reef
grid = np.zeros((rows,columns))
for i in range(0,rows):
for j in range(0,columns):
U = np.random.choice([1,2],
p=[.5, .5])
if (i,j) in coralNodeLocations:
U = 0
grid[i,j] = U
plt.figure(figsize=(15, 5))
plt.imshow(grid)
## Simulations and Number of runs
NumberOfSimulations = 100
dt=.1
tf=100
## Grid shapes
rows, columns = 10, 10
## Inital Coral/Algae Percentages
coralPercent = .5
algaePercent = .25
## Parameters
r=1.0
d=.4 #.2
a=.2
g=.9
y=.75 #.9
threshold = 1.45 #extent of neighborhood recognition
NumberOfTimesteps = int(tf/dt)
NumberOfNodes = rows * columns
turfPercent = 1 - coralPercent - algaePercent
## Specific Coral Nodes
center = (round(rows/2),round(columns/2))
distanceGrid = np.array([Reef.distance([i+.5,j+.5], center)
for i in range(0,rows)
for j in range(0,columns)]).reshape(rows,columns)
coralNodeLocations = (np.where(distanceGrid < np.median(distanceGrid)))
coralNodeLocations = [(coralNodeLocations[0][n],coralNodeLocations[1][n])
for n in range(0,len(coralNodeLocations[0]))]
## Running Model
Resilient = Ocean()
for s in range(0,NumberOfSimulations):
optimalReef = Reef()
count = 0
for i in range(0,rows):
for j in range(0,columns):
U = np.random.choice([1,2],
p=[.5, .5])
if (i,j) in coralNodeLocations:
U = 0
node = Organism(type=U, location=[i,j], ID=count)
optimalReef.append(node)
count = count + 1
optimalReef.generateGraph(threshold)
for n in range(0,NumberOfTimesteps):
optimalReef.roll(r=r, d=d, a=a, g=g, y=y, dt=dt)
Resilient.append(optimalReef)
multsimCoralCounts = np.array([dictToNumpy(Resilient.simulation[i].coralNodeCount)
for i,val in enumerate(Pacific.simulation)]).transpose()
multsimNeighborCounts = np.array([dictToNumpy(Resilient.simulation[i].coralNeighborCount)
for i,val in enumerate(Pacific.simulation)]).transpose()
##plotting
x = list(Resilient.simulation[1].coralNodeCount.keys())
plt.figure(figsize=(15, 5))
plt.plot(x,multsimCoralCounts[:,1:7], alpha=0.4)
plt.plot(x,multsimCoralCounts.mean(axis=1), 'black')
plt.figure(figsize=(15, 5))
CN = multsimNeighborCounts[:,1:7]/multsimCoralCounts[:,1:7]
CNmean = (multsimNeighborCounts/multsimCoralCounts).mean(axis=1)
plt.plot(x, CN, alpha=0.4)
plt.plot(x, CNmean, 'black')
## Simulations and Number of runs
NumberOfSimulations = 100
dt=.1
tf=100
## Grid shapes
rows, columns = 10, 10
## Inital Coral/Algae Percentages
coralPercent = .33
algaePercent = .33
## Parameters
r=1.0
d=.4 #.2
a=.2
g=.9
y=.75 #.9
threshold = 1.45 #extent of neighborhood recognition
NumberOfTimesteps = int(tf/dt)
NumberOfNodes = rows * columns
turfPercent = 1 - coralPercent - algaePercent
## Distance Prep
distanceGrid = np.array([Reef.distance([i+.5,j+.5], center)
for i in range(0,rows)
for j in range(0,columns)]).reshape(rows,columns)
maxCoralDist = np.concatenate(distanceGrid, axis=None)
maxCoralDist = np.sort(maxCoralDist)[33]
coralNodeLocations = (np.where(distanceGrid < maxCoralDist))
coralNodeLocations = [(coralNodeLocations[0][n],coralNodeLocations[1][n])
for n in range(0,len(coralNodeLocations[0]))]
%%time
Resilient = Ocean()
for s in range(0,NumberOfSimulations):
optimalReef = Reef()
count = 0
for i in range(0,rows):
for j in range(0,columns):
U = np.random.choice([1,2],
p=[.5, .5])
if (i,j) in coralNodeLocations:
U = 0
node = Organism(type=U, location=[i,j], ID=count)
optimalReef.append(node)
count = count + 1
optimalReef.generateGraph(threshold)
for n in range(0,NumberOfTimesteps):
optimalReef.roll(r=r, d=d, a=a, g=g, y=y, dt=dt)
Resilient.append(optimalReef)
multsimCoralCounts = np.array([dictToNumpy(Resilient.simulation[i].coralNodeCount)
for i,val in enumerate(Pacific.simulation)]).transpose()
multsimNeighborCounts = np.array([dictToNumpy(Resilient.simulation[i].coralNeighborCount)
for i,val in enumerate(Pacific.simulation)]).transpose()
x = list(Resilient.simulation[1].coralNodeCount.keys())
plt.figure(figsize=(15, 5))
plt.plot(x,multsimCoralCounts[:,1:7], alpha=0.4)
plt.plot(x,multsimCoralCounts.mean(axis=1), 'black')
plt.figure(figsize=(15, 5))
CN = multsimNeighborCounts[:,1:7]/multsimCoralCounts[:,1:7]
CNmean = (multsimNeighborCounts/multsimCoralCounts).mean(axis=1)
plt.plot(x, CN, alpha=0.4)
plt.plot(x, CNmean, 'black')
## Simulations and Number of runs
NumberOfSimulations = 100
dt=.1
tf=100
## Grid shapes
rows, columns = 10, 10
## Inital Coral/Algae Percentages
coralPercent = .33
algaePercent = .33
## Parameters
r=1.0
d=.4 #.2
a=.2
g=.5
y=.75 #.9
threshold = 1.45 #extent of neighborhood recognition
NumberOfTimesteps = int(tf/dt)
NumberOfNodes = rows * columns
turfPercent = 1 - coralPercent - algaePercent
## Distance Prep
distanceGrid = np.array([Reef.distance([i+.5,j+.5], center)
for i in range(0,rows)
for j in range(0,columns)]).reshape(rows,columns)
maxCoralDist = np.concatenate(distanceGrid, axis=None)
maxCoralDist = np.sort(maxCoralDist)[33]
coralNodeLocations = (np.where(distanceGrid < maxCoralDist))
coralNodeLocations = [(coralNodeLocations[0][n],coralNodeLocations[1][n])
for n in range(0,len(coralNodeLocations[0]))]
%%time
LowGrazing = Ocean()
for s in range(0,NumberOfSimulations):
optimalReef = Reef()
count = 0
for i in range(0,rows):
for j in range(0,columns):
U = np.random.choice([1,2],
p=[.5, .5])
if (i,j) in coralNodeLocations:
U = 0
node = Organism(type=U, location=[i,j], ID=count)
optimalReef.append(node)
count = count + 1
optimalReef.generateGraph(threshold)
for n in range(0,NumberOfTimesteps):
optimalReef.roll(r=r, d=d, a=a, g=g, y=y, dt=dt)
LowGrazing.append(optimalReef)
multsimCoralCounts = np.array([dictToNumpy(LowGrazing.simulation[i].coralNodeCount)
for i,val in enumerate(LowGrazing.simulation)]).transpose()
multsimNeighborCounts = np.array([dictToNumpy(LowGrazing.simulation[i].coralNeighborCount)
for i,val in enumerate(LowGrazing.simulation)]).transpose()
x = list(LowGrazing.simulation[1].coralNodeCount.keys())
plt.figure(figsize=(15, 5))
plt.plot(x,multsimCoralCounts, alpha=0.4)
plt.plot(x,multsimCoralCounts.mean(axis=1), 'black')
a = multsimNeighborCounts
b = multsimCoralCounts
CN = np.divide(a, b, out=np.zeros_like(a), where=b!=0)
CNmean = CN.mean(axis=1)
plt.figure(figsize=(15, 5))
plt.plot(x, CN, alpha=0.4)
plt.plot(x, CNmean, 'black')
## Simulations and Number of runs
NumberOfSimulations = 10
dt=.1
tf=1000
## Grid shapes
rows, columns = 10, 10
## Inital Coral/Algae Percentages
coralPercent = .33
algaePercent = .33
## Parameters
r=1.0
d=.4 #.2
a=.2
g=.5
y=.75 #.9
threshold = 1.45 #extent of neighborhood recognition
NumberOfTimesteps = int(tf/dt)
NumberOfNodes = rows * columns
turfPercent = 1 - coralPercent - algaePercent
## Distance Prep
distanceGrid = np.array([Reef.distance([i+.5,j+.5], center)
for i in range(0,rows)
for j in range(0,columns)]).reshape(rows,columns)
maxCoralDist = np.concatenate(distanceGrid, axis=None)
maxCoralDist = np.sort(maxCoralDist)[33]
coralNodeLocations = (np.where(distanceGrid < maxCoralDist))
coralNodeLocations = [(coralNodeLocations[0][n],coralNodeLocations[1][n])
for n in range(0,len(coralNodeLocations[0]))]
%%time
LowGrazing = Ocean()
for s in range(0,NumberOfSimulations):
optimalReef = Reef()
count = 0
for i in range(0,rows):
for j in range(0,columns):
U = np.random.choice([1,2],
p=[.5, .5])
if (i,j) in coralNodeLocations:
U = 0
node = Organism(type=U, location=[i,j], ID=count)
optimalReef.append(node)
count = count + 1
optimalReef.generateGraph(threshold)
for n in range(0,NumberOfTimesteps):
optimalReef.roll(r=r, d=d, a=a, g=g, y=y, dt=dt)
LowGrazing.append(optimalReef)
multsimCoralCounts = np.array([dictToNumpy(LowGrazing.simulation[i].coralNodeCount)
for i,val in enumerate(LowGrazing.simulation)]).transpose()
multsimNeighborCounts = np.array([dictToNumpy(LowGrazing.simulation[i].coralNeighborCount)
for i,val in enumerate(LowGrazing.simulation)]).transpose()
x = list(LowGrazing.simulation[1].coralNodeCount.keys())
plt.figure(figsize=(15, 5))
plt.plot(x,multsimCoralCounts, alpha=0.4)
plt.plot(x,multsimCoralCounts.mean(axis=1), 'black')
a = multsimNeighborCounts
b = multsimCoralCounts
CN = np.divide(a, b, out=np.zeros_like(a), where=b!=0)
CNmean = CN.mean(axis=1)
plt.figure(figsize=(15, 5))
plt.plot(x, CN, alpha=0.4)
plt.plot(x, CNmean, 'black')
## Simulations and Number of runs
NumberOfSimulations = 10
dt=.1
tf=1000
## Grid shapes
rows, columns = 10, 10
## Inital Coral/Algae Percentages
coralPercent = .33
algaePercent = .33
## Parameters
r=1.0
d=.4 #.2
a=.2
g=.2
y=.75 #.9
threshold = 1.45 #extent of neighborhood recognition
NumberOfTimesteps = int(tf/dt)
NumberOfNodes = rows * columns
turfPercent = 1 - coralPercent - algaePercent
## Distance Prep
distanceGrid = np.array([Reef.distance([i+.5,j+.5], center)
for i in range(0,rows)
for j in range(0,columns)]).reshape(rows,columns)
maxCoralDist = np.concatenate(distanceGrid, axis=None)
maxCoralDist = np.sort(maxCoralDist)[33]
coralNodeLocations = (np.where(distanceGrid < maxCoralDist))
coralNodeLocations = [(coralNodeLocations[0][n],coralNodeLocations[1][n])
for n in range(0,len(coralNodeLocations[0]))]
%%time
LowGrazing = Ocean()
for s in range(0,NumberOfSimulations):
optimalReef = Reef()
count = 0
for i in range(0,rows):
for j in range(0,columns):
U = np.random.choice([1,2],
p=[.5, .5])
if (i,j) in coralNodeLocations:
U = 0
node = Organism(type=U, location=[i,j], ID=count)
optimalReef.append(node)
count = count + 1
optimalReef.generateGraph(threshold)
for n in range(0,NumberOfTimesteps):
optimalReef.roll(r=r, d=d, a=a, g=g, y=y, dt=dt)
LowGrazing.append(optimalReef)
multsimCoralCounts = np.array([dictToNumpy(LowGrazing.simulation[i].coralNodeCount)
for i,val in enumerate(LowGrazing.simulation)]).transpose()
multsimNeighborCounts = np.array([dictToNumpy(LowGrazing.simulation[i].coralNeighborCount)
for i,val in enumerate(LowGrazing.simulation)]).transpose()
x = list(LowGrazing.simulation[1].coralNodeCount.keys())
plt.figure(figsize=(15, 5))
plt.plot(x,multsimCoralCounts, alpha=0.4)
plt.plot(x,multsimCoralCounts.mean(axis=1), 'black')
a = multsimNeighborCounts
b = multsimCoralCounts
CN = np.divide(a, b, out=np.zeros_like(a), where=b!=0)
CNmean = CN.mean(axis=1)
plt.figure(figsize=(15, 5))
plt.plot(x, CN, alpha=0.4)
plt.plot(x, CNmean, 'black')
## Simulations and Number of runs
NumberOfSimulations = 30
dt=.1
tf=1000
## Grid shapes
rows, columns = 10, 10
## Inital Coral/Algae Percentages
coralPercent = .33
algaePercent = .33
## Parameters
r=1.0
d=.4 #.2
a=.2
g=.5
y=.75 #.9
threshold = 1.45 #extent of neighborhood recognition
NumberOfTimesteps = int(tf/dt)
NumberOfNodes = rows * columns
turfPercent = 1 - coralPercent - algaePercent
## Storing Spatial Grid, may slow down run
#types = np.zeros((NumberOfTimesteps, NumberOfNodes, NumberOfSimulations))
## Distance Prep
distanceGrid = np.array([Reef.distance([i+.5,j+.5], center)
for i in range(0,rows)
for j in range(0,columns)]).reshape(rows,columns)
maxCoralDist = np.concatenate(distanceGrid, axis=None)
maxCoralDist = np.sort(maxCoralDist)[33]
coralNodeLocations = (np.where(distanceGrid < maxCoralDist))
coralNodeLocations = [(coralNodeLocations[0][n],coralNodeLocations[1][n])
for n in range(0,len(coralNodeLocations[0]))]
%%time
#Switching = Ocean()
for s in range(0,NumberOfSimulations):
optimalReef = Reef()
count = 0
for i in range(0,rows):
for j in range(0,columns):
U = np.random.choice([1,2],
p=[.5, .5])
if (i,j) in coralNodeLocations:
U = 0
node = Organism(type=U, location=[i,j], ID=count)
optimalReef.append(node)
count = count + 1
optimalReef.generateGraph(threshold)
for n in range(0,NumberOfTimesteps):
for i,val in enumerate(optimalReef.nodes):
types[n,i,s] = optimalReef.nodes[i].type
optimalReef.roll(r=r, d=d, a=a, g=g, y=y, dt=dt)
Switching.append(optimalReef)
# Save types, i.e. all the grid progression data
#for i in range(0,len(Switching.simulation)):
# np.savetxt("coralModelTrackingOutputs /modelOutput_switching"+ str(i)+".csv",
# np.reshape(types[:,:,i], (-1, rows)), delimiter=",")
#import pickle
#path = 'coralModelTrackingOutputs/'
#output_name = 'grazing5'
#outfile = open(path+output_name, "wb") #open pickle jar
#pickle.dump(Switching, outfile) #put contents into jar
#outfile.close() #close the jar
#PacificReturns = pickle.loads(open(path+output_name, "rb").read())
x = list(Switching.simulation[1].coralNodeCount.keys())
multsimCoralCounts = np.array([dictToNumpy(Switching.simulation[i].coralNodeCount)
for i,val in enumerate(Switching.simulation)]).transpose()
multsimNeighborCounts = np.array([dictToNumpy(Switching.simulation[i].coralNeighborCount)
for i,val in enumerate(Switching.simulation)]).transpose()
C = multsimCoralCounts
N = multsimNeighborCounts
plt.figure(figsize=(15, 5))
plt.plot(x,C, alpha=0.4)
plt.plot(x,C.mean(axis=1), 'black')
CN = np.divide(N, C, out=np.zeros_like(N), where=C!=0)
CNmean = CN.mean(axis=1)
plt.figure(figsize=(15, 5))
plt.plot(x, CN, alpha=0.4)
plt.plot(x, CNmean, 'black')
CNr = np.divide(CN, C, out=np.zeros_like(a), where=b!=0)
CNrmean = CNr.mean(axis=1)
plt.figure(figsize=(15, 5))
plt.plot(x, CNr, alpha=0.4)
plt.plot(x, CNrmean, 'black')
simulation 7:400, 14:1100, 25:900
Mid Crash (simulation:crashing time)
simulation 2:2300-3000, 22:3000, 28:3000
EarlyMid Crash (simulation:crashing time)
simulation 8:1800, 13:1700, 17:1800, 21, 23
Ambiguous early crashers (simulation:crashing time)
timeSeriesPlotter(C=C,CN=CN,CNr=CNr,x=x,simulation=14,
title="Makes it for a while, and then crashes. grazing =.5")
initialFinal3(types=types, C=C, CN=CN, CNr=CNr, simulation=7,
timesteps=[0,100,500])
initialFinal3(types=types, C=C, CN=CN, CNr=CNr, simulation=14,
timesteps=[0,1000,2000])
initialFinal3(types=types, C=C, CN=CN, CNr=CNr, simulation=25,
timesteps=[0,700,1000])
timeSeriesPlotter(C=C,CN=CN,CNr=CNr,x=x,simulation=2,
title="Makes it for a while, and then crashes. grazing =.5")
initialFinal3(types=types, C=C, CN=CN, CNr=CNr, simulation=2,
timesteps=[0,2000,3000])
initialFinal3(types=types, C=C, CN=CN, CNr=CNr, simulation=22,
timesteps=[0,2000,3000])
initialFinal3(types=types, C=C, CN=CN, CNr=CNr, simulation=28,
timesteps=[0,2000,3000])
timeSeriesPlotter(C=C,CN=CN,CNr=CNr,x=x,simulation=8,
title="Makes it for a while, and then crashes. grazing =.5")
initialFinal3(types=types, C=C, CN=CN, CNr=CNr, simulation=8,
timesteps=[0,1000,2000])
initialFinal3(types=types, C=C, CN=CN, CNr=CNr, simulation=13,
timesteps=[0,1000,2000])
initialFinal3(types=types, C=C, CN=CN, CNr=CNr, simulation=17,
timesteps=[0,1000,2000])
timeSeriesPlotter(C=C,CN=CN,CNr=CNr,x=x,simulation=6,
title="Makes it for a while, and then crashes. grazing =.5")
initialFinal3(types=types, C=C, CN=CN, CNr=CNr, simulation=6,
timesteps=[0,100,300])
initialFinal3(types=types, C=C, CN=CN, CNr=CNr, simulation=9,
timesteps=[0,100,300])
initialFinal3(types=types, C=C, CN=CN, CNr=CNr, simulation=10,
timesteps=[0,100,300])
timeSeriesPlotter(C=C[0:3000,:],CN=CN[0:3000,:],
CNr=CNr[0:3000,:],x=x[0:3000],simulation=14)
initialFinal9(types=types, C=C, CN=CN, CNr=CNr, simulation=14,
timesteps=[0,10,75,
90,110,125,
230,240,250])
timeSeriesPlotter(C=C[0:3000,:],CN=CN[0:3000,:],
CNr=CNr[0:3000,:],x=x[0:3000],simulation=2)
initialFinal9(types=types, C=C, CN=CN, CNr=CNr, simulation=2,
timesteps=[0,10,75,
90,110,125,
230,240,250])
simulation = 7
plt.figure(figsize=(15, 5))
plt.scatter(CN[:,simulation], CNr[:,simulation], alpha=0.1)
simulation = 14
plt.figure(figsize=(15, 5))
plt.scatter(CN[:,simulation], CNr[:,simulation], alpha=0.1)
simulation = 25
plt.figure(figsize=(15, 5))
plt.scatter(CN[:,simulation], CNr[:,simulation], alpha=0.1)
simulation = 2
plt.figure(figsize=(15, 5))
plt.scatter(CN[:,simulation], CNr[:,simulation], alpha=0.1)
simulation = 22
plt.figure(figsize=(15, 5))
plt.scatter(CN[:,simulation], CNr[:,simulation], alpha=0.1)
simulation = 28
plt.figure(figsize=(15, 5))
plt.scatter(CN[:,simulation], CNr[:,simulation], alpha=0.1)
simulation = 8
plt.figure(figsize=(15, 5))
plt.scatter(CN[:,simulation], CNr[:,simulation], alpha=0.1)
simulation = 13
plt.figure(figsize=(15, 5))
plt.scatter(CN[:,simulation], CNr[:,simulation], alpha=0.1)
simulation = 17
plt.figure(figsize=(15, 5))
plt.scatter(CN[:,simulation], CNr[:,simulation], alpha=0.1)
simulation = 6
plt.figure(figsize=(15, 5))
plt.scatter(CN[:,simulation], CNr[:,simulation], alpha=0.1)
simulation = 9
plt.figure(figsize=(15, 5))
plt.scatter(CN[:,simulation], CNr[:,simulation], alpha=0.1)
simulation = 10
plt.figure(figsize=(15, 5))
plt.scatter(CN[:,simulation], CNr[:,simulation], alpha=0.1)